
//Random Game Engine
//Copyright (C) 2013  Nikolay Dionisov

//This program is free software: you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation, either version 3 of the License, or
//(at your option) any later version.

//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.

//You should have received a copy of the GNU General Public License
//along with this program.  If not, see <http://www.gnu.org/licenses/>.



#ifndef __GENERAL_WORKS__H_INCLUDED__
#define __GENERAL_WORKS__H_INCLUDED__

#include "..\ManagerInterfaces.h"
#include "..\..\SystemInterface.h"
namespace re
{
	namespace core
	{
		class UpdateWork : public Work
		{
		public:
			UpdateWork(ISystem* s) : sys(s) {}
			~UpdateWork() {}

			void DoWork() { sys->Update(id); }
		public:
			TaskId id;
			ISystem* sys;
		};
		class ShutDownWork : public Work
		{
		public:
			ShutDownWork(ISystem* s) : sys(s) {}
			~ShutDownWork() {}

			void DoWork() { sys->ShutDown(); }
			ISystem* sys;
		};
		class DoNothingWork : public Work
		{
		public:
			DoNothingWork() {}
			~DoNothingWork() {}

			void DoWork() { }
		};
	}
}

#endif